﻿Imports Capa_de_Acceso_a_Datos
Imports Capa_de_Negocio

Public Class frmConsulta

    Public ConsultaFarmaciaId As Integer = 0
    Public FarmaciaId As Integer = 0
    Public SolucionConsultaFarmaciaId As Integer
    Private PersonaEmail As String
    Private visualizacion As Boolean

#Region "Inicialización y Carga"

    Private Sub frmConsulta_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        Me.Dispose()
    End Sub

    Private Sub frmConsulta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cargarCombos()
    End Sub

    Private Sub cargarCombos()
        CargarComboTipoConsulta()
        CargarComboRepresentanteFarmacia()
        CargarComboEmpleado()
        CargarComboEmpleadoSolucion()
    End Sub

    Public Sub CargarComboTipoConsulta()
        'Combo Tipo de Consulta
        cboTipoConsulta.DataSource = TipoConsultaDAO.obtenerTiposConsultas(0)
        cboTipoConsulta.ValueMember = "TipoConsultaId"
        cboTipoConsulta.DisplayMember = "TipoConsultaNombre"
    End Sub

    Public Sub CargarComboRepresentanteFarmacia()
        'Combo Representante de Farmacia
        cboReprFarmacia.DataSource = RepresentanteFarmaciaDAO.selectRepresentanteFarmacias(FarmaciaId)
        cboReprFarmacia.ValueMember = "RepresentanteFarmaciaId"
        cboReprFarmacia.DisplayMember = "RepresentanteFarmacia"

    End Sub

    Public Sub CargarComboEmpleado()
        cboEmpleado.DataSource = EmpleadoDAO.comboEmpleados()
        cboEmpleado.ValueMember = "EmpleadoId"
        cboEmpleado.DisplayMember = "Descripcion"
        cboEmpleado.SelectedValue = frmMenuAuditoria.empleadoId
    End Sub

    Public Sub CargarComboEmpleadoSolucion()
        cboEmpleadoSolucion.DataSource = EmpleadoDAO.comboEmpleados()
        cboEmpleadoSolucion.ValueMember = "EmpleadoId"
        cboEmpleadoSolucion.DisplayMember = "Descripcion"
        cboEmpleadoSolucion.SelectedValue = frmMenuAuditoria.empleadoId
    End Sub

#End Region

    Private Sub btnBuscarFarmacia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscarFarmacia.Click

        frmSeleccionarFarmacia.frmLlamada = Me.Name
        frmSeleccionarFarmacia.ShowDialog()
        cboReprFarmacia.Enabled = True
        CargarComboRepresentanteFarmacia()

    End Sub

    Private Sub btnAgregarConsulta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregarConsulta.Click
        If CamposCompletos() Then
            ConsultaFarmaciaDAO.insertarConsultaFarmacia(txtMotivo.Text, dtpFechaConsulta.Value, dtpFechaLimiteConsulta.Value, cboTipoConsulta.SelectedValue, cboEmpleado.SelectedValue, cboReprFarmacia.SelectedValue, FarmaciaId, 1)
            MsgBox("La Consulta ha sido registrada con éxito", MsgBoxStyle.Information, "Atención")
            PersonaEmail = RepresentanteFarmaciaDAO.obtenerEmailRepresentante(cboReprFarmacia.SelectedValue)

            'Se envia un mail al representante de la farmacia que efectuó la consulta
            Cursor = Cursors.WaitCursor
            Mail.enviarMailConsulta(PersonaEmail, txtMotivo.Text)
            LimpiarFormConsulta()
            Cursor = Cursors.Default
            Me.Close()
        End If
    End Sub

    Private Sub btnModificarConsulta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificarConsulta.Click

        If CamposCompletos() Then
            Dim cantSoluciones As Integer = SolucionConsultaFarmaciaDAO.obtenerCantidadSolucionesDeConsulta(ConsultaFarmaciaId)

            If cantSoluciones = 0 Then
                'Si no tiene solucion la ponemos como no solucionada
                ConsultaFarmaciaDAO.actualizarConsultaFarmacia(ConsultaFarmaciaId, txtMotivo.Text, dtpFechaConsulta.Value, dtpFechaLimiteConsulta.Value, cboTipoConsulta.SelectedValue, cboEmpleado.SelectedValue, cboReprFarmacia.SelectedValue, FarmaciaId, EstadoConsultaDAO.ESTADO_NO_SOLUCIONADA)
            Else
                'Si tiene solucion la ponemos como solucionada
                ConsultaFarmaciaDAO.actualizarConsultaFarmacia(ConsultaFarmaciaId, txtMotivo.Text, dtpFechaConsulta.Value, dtpFechaLimiteConsulta.Value, cboTipoConsulta.SelectedValue, cboEmpleado.SelectedValue, cboReprFarmacia.SelectedValue, FarmaciaId, EstadoConsultaDAO.ESTADO_SOLUCIONADA)

            End If
            MsgBox("La Consulta ha sido modificada con éxito", MsgBoxStyle.Information, "Atención")
            LimpiarFormConsulta()
            Me.Close()
        End If
    End Sub

    Public Sub CargarConsulta(ByVal idConsulta As Integer)
        'Guardamos el Id de la consulta
        ConsultaFarmaciaId = idConsulta

        'Cargamos los datos generales de la consulta
        Dim consulta As DataRow = ConsultaFarmaciaDAO.obtenerConsultasFarmacias(ConsultaFarmaciaId).Rows(0)
        Dim farmacia As DataRow = FarmaciaDAO.obtenerFarmacias(consulta("FarmaciaId")).Rows(0)

        'Guardamos el Id de la farmacia
        FarmaciaId = farmacia("FarmaciaId")
        txtFarmacia.Text = farmacia("FarmaciaNombre")
        dtpFechaConsulta.Value = consulta("ConsultaFarmaciaFecha")
        dtpFechaLimiteConsulta.Value = consulta("ConsultaFarmaciaFechaLimite")
        cboEmpleado.SelectedValue = consulta("EmpleadoId")
        cboTipoConsulta.SelectedValue = consulta("TipoConsultaId")
        cboReprFarmacia.SelectedValue = consulta("RepresentanteFarmaciaId")
        txtMotivo.Text = consulta("ConsultaFarmaciaMotivo")

        'Cargamos la solución de la consulta
        CargarSolucion(ConsultaFarmaciaId)
    End Sub

    Public Sub CargarSolucion(ByVal consultaId As Integer)
        'Verificamos si la consulta tiene cargada alguna solución
        Dim cantSoluciones As Integer = SolucionConsultaFarmaciaDAO.obtenerCantidadSolucionesDeConsulta(consultaId)
        If cantSoluciones = 0 Then
            If Not visualizacion Then
                btnModificarSolucion.Enabled = False
                btnGuardarSolucion.Enabled = True
            End If
            Return
        Else
            If Not visualizacion Then
                btnModificarSolucion.Enabled = True
                btnGuardarSolucion.Enabled = False
            End If

            'Cargamos la solución de la consulta
            Dim solucion As DataRow = SolucionConsultaFarmaciaDAO.selectSolucionesFarmacia(ConsultaFarmaciaId).Rows(0)
            'Guaramos el Id de la Solución
            SolucionConsultaFarmaciaId = solucion("SolucionConsultaFarmaciaId")
            dtpFechaSolucion.Value = solucion("SolucionConsultaFarmaciaFecha")
            chbConformidad.Checked = solucion("SolucionConsultaFarmaciaConformidad")
            cboEmpleadoSolucion.SelectedValue = solucion("EmpleadoId")
            txtDescripcion.Text = solucion("SolucionConsultaFarmaciaDescripcion")
        End If
    End Sub

    Private Function CamposCompletos() As Boolean

        Dim retorno As Boolean = True

        If txtFarmacia.Text = "" Then
            MsgBox("El campo Farmacia es requerido.", MsgBoxStyle.Exclamation, "Atención")
            retorno = False
            Return retorno
        End If

        If txtMotivo.Text = "" Then
            MsgBox("El campo Motivo es requerido.", MsgBoxStyle.Exclamation, "Atención")
            txtMotivo.Focus()
            retorno = False
            Return retorno
        End If

        If cboEmpleado.SelectedItem Is Nothing Then
            MsgBox("El campo Empleado es requerido." + Chr(13) + "Recuerde que debe estar logueado para agregar una Consulta.", MsgBoxStyle.Exclamation, "Atención")
            retorno = False
            Return retorno
        End If

        If dtpFechaConsulta.Value > dtpFechaLimiteConsulta.Value Then
            MsgBox("La Fecha Limite debe ser posterior a la Fecha de hoy.", MsgBoxStyle.Exclamation, "Atención")
            retorno = False
            Return retorno
        End If

        Return retorno

    End Function

    Private Function CamposCompletosSolucion() As Boolean
        Dim retorno As Boolean = True
        If txtDescripcion.Text = "" Then
            MsgBox("El campo Descripción es requerido.", MsgBoxStyle.Exclamation, "Atención")
            retorno = False
            Return retorno
        End If
        Return retorno
    End Function

    Public Sub LimpiarFormConsulta()
        dtpFechaConsulta.Value = Date.Now
        dtpFechaLimiteConsulta.Value = Date.Now
        txtFarmacia.Text = ""
        txtMotivo.Text = ""
        cboReprFarmacia.SelectedIndex = -1
        ConsultaFarmaciaId = 0
        FarmaciaId = 0
    End Sub

    Public Sub LimpiarFormSolucion()

        dtpFechaSolucion.Value = Date.Now
        txtDescripcion.Text = ""
        chbConformidad.Checked = False
        SolucionConsultaFarmaciaId = 0
    End Sub

    Private Sub btnGuardarSolucion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardarSolucion.Click
        If CamposCompletosSolucion() Then
            SolucionConsultaFarmaciaDAO.insertarSolucionConsultaFarmacia(ConsultaFarmaciaId, dtpFechaSolucion.Value, txtDescripcion.Text, cboEmpleadoSolucion.SelectedValue, chbConformidad.Checked)
            frmConsultasFarmacias.CargarGrillaConsultasFarmacias()
            MsgBox("La Solución ha sido registrada con éxito", MsgBoxStyle.Information, "Atención")
            LimpiarFormSolucion()
            PersonaEmail = RepresentanteFarmaciaDAO.obtenerEmailRepresentante(cboReprFarmacia.SelectedValue)

            'Se envia un mail al representante de la farmacia que efectuó la consulta
            Cursor = Cursors.WaitCursor
            Dim consulta As DataRow = ConsultaFarmaciaDAO.obtenerConsultasFarmacias(ConsultaFarmaciaId).Rows(0)
            Mail.enviarMailSolucion(PersonaEmail, consulta("ConsultaFarmaciaMotivo"), txtDescripcion.Text)
            Cursor = Cursors.Default
            Me.Close()
        End If
    End Sub

    Private Sub btnModificarSolucion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificarSolucion.Click
        If CamposCompletosSolucion() Then
            SolucionConsultaFarmaciaDAO.actualizarSolucionConsultaFarmacia(SolucionConsultaFarmaciaId, ConsultaFarmaciaId, dtpFechaSolucion.Value, txtDescripcion.Text, cboEmpleadoSolucion.SelectedValue, chbConformidad.Checked)
            frmConsultasFarmacias.CargarGrillaConsultasFarmacias()
            MsgBox("La Solución de la Consulta ha sido modificada con éxito", MsgBoxStyle.Information, "Atención")
            LimpiarFormSolucion()
            Me.Close()
        End If
    End Sub

    Public Sub habilitarCarga()
        'Tab's
        tpDatos.Enabled = True
        tpDatos.Focus()
        tpSolucion.Enabled = False

        'ComboBox's
        cboEmpleado.Enabled = False
        cboEmpleadoSolucion.Enabled = False
        cboReprFarmacia.Enabled = True
        cboTipoConsulta.Enabled = True

        'TextBox's
        txtDescripcion.Enabled = False
        txtFarmacia.Enabled = False
        txtMotivo.Enabled = True

        'Button's
        btnModificarConsulta.Enabled = False
        btnAgregarConsulta.Enabled = True
        btnBuscarFarmacia.Enabled = True
        btnModificarSolucion.Enabled = False
        btnGuardarSolucion.Enabled = False

        'DataTimePicker's
        dtpFechaConsulta.Enabled = False
        dtpFechaLimiteConsulta.Enabled = True
        dtpFechaSolucion.Enabled = False
        dtpFechaConsulta.Value = Now
        dtpFechaLimiteConsulta.Value = Now

        'CheckBox
        chbConformidad.Enabled = False

        visualizacion = False
    End Sub

    Public Sub habilitarMoficacion()
        'Tab's
        tpDatos.Enabled = True
        tpDatos.Focus()
        tpSolucion.Enabled = True

        'ComboBox's
        cboEmpleado.Enabled = False
        cboEmpleadoSolucion.Enabled = False
        cboReprFarmacia.Enabled = True
        cboTipoConsulta.Enabled = True

        'TextBox's
        txtDescripcion.Enabled = True
        txtFarmacia.Enabled = False
        txtMotivo.Enabled = True

        'Button's
        btnModificarConsulta.Enabled = True
        btnAgregarConsulta.Enabled = False
        btnBuscarFarmacia.Enabled = True
        btnModificarSolucion.Enabled = False
        btnGuardarSolucion.Enabled = False

        'DataTimePicker's
        dtpFechaConsulta.Enabled = False
        dtpFechaLimiteConsulta.Enabled = True
        dtpFechaSolucion.Enabled = False

        'CheckBox
        chbConformidad.Enabled = True

        visualizacion = False
    End Sub

    Public Sub habilitarVisualización()
        'Tab's
        tpDatos.Enabled = True
        tpSolucion.Enabled = True

        'ComboBox's
        cboEmpleado.Enabled = False
        cboEmpleadoSolucion.Enabled = False
        cboReprFarmacia.Enabled = False
        cboTipoConsulta.Enabled = False

        'TextBox's
        txtDescripcion.Enabled = False
        txtFarmacia.Enabled = False
        txtMotivo.Enabled = False

        'Button's
        btnModificarConsulta.Enabled = False
        btnAgregarConsulta.Enabled = False
        btnBuscarFarmacia.Enabled = False
        btnModificarSolucion.Enabled = False
        btnGuardarSolucion.Enabled = False

        'DataTimePicker's
        dtpFechaConsulta.Enabled = False
        dtpFechaLimiteConsulta.Enabled = False
        dtpFechaSolucion.Enabled = False

        'CheckBox
        chbConformidad.Enabled = False

        visualizacion = True
    End Sub
End Class